<?php
namespace services\models;

/**
 * 帮助中心Service
 *
 * @author huipeng.teng@liketry.com
 */
class HelpCenter extends \common\models\HelpCenter {
    /**
     * 从数据库获取一个帮助信息
     * @param int $id 帮助中心ID
     * @return array 帮助中心信息
     */
    public static function getRowByIdFromDb($id) {
        $var = self::find()->where('help_center_id=:id', ['id' => $id])->one();
        if(empty($var)) {
            return [];
        }

        return \yii\helpers\ArrayHelper::toArray($var);
    }

    /**
     * 从Redis中获取一个帮助信息，如果缓存不存在则查询数据库获取，并生成缓存。
     * @param int $id 帮助中心ID
     * @return array 帮助中心信息
     */
    public static function getRowById($id) {
        $str = self::getRedis()->get('help_' . $id);

        if(!empty($str)) {
            $row = unserialize($str);
            if(!isset($row['is_show']) || $row['is_show'] != 1) {
                return [];
            }

            $row['content'] = self::getRedis()->get('help_content_' . $id);
            return $row;
        }

        $row = self::getRowByIdFromDb($id);
        if(!isset($row['is_show']) || $row['is_show'] != 1) {
            return [];
        }

        $content = $row['content'];
        unset($row['content']);

        self::getRedis()->set('help_content_' . $id, $content);
        self::getRedis()->set('help_' . $id, serialize($row));

        $row['content'] = $content;

        return $row;
    }

    /**
     * 删除Redis缓存
     * @param int $id 帮助中心ID
     */
    public static function deleteByIdFromRedis($id) {
        self::getRedis()->del('help_' . $id);
        self::getRedis()->del('help_content_' . $id);
    }
}
